/**************************************************************************
 *
 * Copyright (c) 2015-2017  QIKU Company             　　　　　　　            
 *                 奇酷软件（深圳）有限公司  版权所有 2015-2017
 *
 * PROPRIETARY RIGHTS of QIKU Company are involved in the  　　　　　　     
 * subject matter of this material.  All manufacturing, reproduction, use, 
 * and sales rights pertaining to this subject matter are governed by the  
 * license agreement.  The recipient of this software implicitly accepts   
 * the terms of the license.                                               
 * 本软件文档资料是奇酷公司的资产,任何人士阅读和使用本资料必须获得                     
 * 相应的书面授权,承担保密责任和接受相应的法律约束.                                 
 *
 **************************************************************************/
package com.yw.android.common.filelogger;

import java.util.Vector;

/**
 * 多个日志追加器
 *
 * @author yuanwei
 */
public class MultiAppender implements Appender {
    /**
     * 日志追加器列表
     */
    private Vector<Appender> appenders = new Vector<Appender>();

    /**
     * 添加一个日志输出器
     *
     * @param appender 日志输出器
     */
    public void addAppender(Appender appender) {
        appenders.addElement(appender);
    }

    /**
     * 删除一个日志输出器
     *
     * @param appender 日志输出器
     * @return true 成功；false 不成功
     */
    public boolean removeAppender(Appender appender) {
        return appenders.removeElement(appender);
    }

    /**
     * 移除所有的日志输出器
     */
    public void removeAllAppenders() {
        appenders.removeAllElements();
    }

    /**
     * 读取日志输出器的个数
     *
     * @return 日志输出器的个数
     */
    public int getAppenderCount() {
        return appenders.size();
    }

    @Override
    public void close() {
        for (int i = 0; i < appenders.size(); i++) {
            appenders.elementAt(i).close();
        }
        appenders.clear();
    }

    @Override
    public void setLogLevel(int level) {
        for (int i = 0; i < appenders.size(); i++) {
            appenders.elementAt(i).setLogLevel(level);
        }
    }

    @Override
    public void writeLogMessage(String tag, String level, String msg) {
        for (int i = 0; i < appenders.size(); i++) {
            appenders.elementAt(i).writeLogMessage(tag, level, msg);
        }
    }

    @Override
    public void writeLogMessage(String tag, String level, String msg,
                                Throwable t) {
        for (int i = 0; i < appenders.size(); i++) {
            appenders.elementAt(i).writeLogMessage(tag, level, msg, t);
        }
    }
}
